/**
 * First we will load all of this project's JavaScript dependencies which
 * includes Vue and other libraries. It is a great starting point when
 * building robust, powerful web applications using Vue and Laravel.
 */

require('./bootstrap');

window.Vue = require('vue');

/**
 * The following block of code may be used to automatically register your
 * Vue components. It will recursively scan this directory for the Vue
 * components and automatically register them with their "basename".
 *
 * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
 */

// const files = require.context('./', true, /\.vue$/i);
// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default));

// Vue.component('example-component', require('./components/ExampleComponent.vue').default);

/**
 * Next, we will create a fresh Vue application instance and attach it to
 * the page. Then, you may begin adding components to this application
 * or customize the JavaScript scaffolding to fit your unique needs.
 */
// vue-router
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import router from './routes'


// root node
Vue.component('app', require('./components/App').default)

// vee-validate
import './vee-validate'

// api
// Add a request interceptor
import JWTToken from './helpers/jwt'
axios.interceptors.request.use(config => {
    // 请求时带上 token
    if (JWTToken.getToken()) {
        config.headers['Authorization'] = 'Bearer ' + JWTToken.getToken()
    }
    return config;
}, error => {

    return Promise.reject(error);
});

// vuex
import store from './store'

// logger
import logger from './helpers/logger'
Vue.use(logger.install)



new Vue({
    el: '#app',
    router,
    store
});
